home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-11-11 | 11.4 KB | 392 lines | [TEXT/MPS ] |
- {
- File: Power.p
-
- Copyright: © 1984-1994 by Apple Computer, Inc.
- All rights reserved.
-
- Version: Universal Interfaces 2.0a3 ETO #16, MPW prerelease. Friday, November 11, 1994.
-
- Bugs?: If you find a problem with this file, send the file and version
- information (from above) and the problem description to:
-
- Internet: apple.bugs@applelink.apple.com
- AppleLink: APPLE.BUGS
-
- }
-
- {$IFC UNDEFINED UsingIncludes}
- {$SETC UsingIncludes := 0}
- {$ENDC}
-
- {$IFC NOT UsingIncludes}
- UNIT Power;
- INTERFACE
- {$ENDC}
-
- {$IFC UNDEFINED __POWER__}
- {$SETC __POWER__ := 1}
-
- {$I+}
- {$SETC PowerIncludes := UsingIncludes}
- {$SETC UsingIncludes := 1}
-
-
- {$IFC UNDEFINED __TYPES__}
- {$I Types.p}
- {$ENDC}
- { ConditionalMacros.p }
-
- {$IFC UNDEFINED __MIXEDMODE__}
- {$I MixedMode.p}
- {$ENDC}
-
- {$PUSH}
- {$ALIGN MAC68K}
- {$LibExport+}
-
- CONST
- { Bit positions for ModemByte }
- modemOnBit = 0;
- ringWakeUpBit = 2;
- modemInstalledBit = 3;
- ringDetectBit = 4;
- modemOnHookBit = 5;
- { masks for ModemByte }
- modemOnMask = $1;
- ringWakeUpMask = $4;
- modemInstalledMask = $8;
- ringDetectMask = $10;
- modemOnHookMask = $20;
- { bit positions for BatteryByte }
- chargerConnBit = 0;
- hiChargeBit = 1;
- chargeOverFlowBit = 2;
- batteryDeadBit = 3;
- batteryLowBit = 4;
- connChangedBit = 5;
- { masks for BatteryByte }
- chargerConnMask = $1;
- hiChargeMask = $2;
- chargeOverFlowMask = $4;
- batteryDeadMask = $8;
-
- batteryLowMask = $10;
- connChangedMask = $20;
- { commands to SleepQRec sleepQProc }
- sleepRequest = 1;
- sleepDemand = 2;
- sleepWakeUp = 3;
- sleepRevoke = 4;
- { SleepQRec.sleepQFlags }
- noCalls = 1;
- noRequest = 2;
- slpQType = 16;
- sleepQType = 16;
-
- { bits in bitfield returned by PMFeatures }
- hasWakeupTimer = 0; { 1=wakeup timer is supported }
- hasSharedModemPort = 1; { 1=modem port shared by SCC and internal modem }
- hasProcessorCycling = 2; { 1=processor cycling is supported }
- mustProcessorCycle = 3; { 1=processor cycling should not be turned off }
- hasReducedSpeed = 4; { 1=processor can be started up at reduced speed }
- dynamicSpeedChange = 5; { 1=processor speed can be switched dynamically }
- hasSCSIDiskMode = 6; { 1=SCSI Disk Mode is supported }
- canGetBatteryTime = 7; { 1=battery time can be calculated }
- canWakeupOnRing = 8; { 1=can wakeup when the modem detects a ring }
- hasDimmingSupport = 9; { 1 has dimming support built into the rom }
-
- { bits in bitfield returned by GetIntModemInfo and set by SetIntModemState }
- hasInternalModem = 0; { 1=internal modem installed }
- intModemRingDetect = 1; { 1=internal modem has detected a ring }
- intModemOffHook = 2; { 1=internal modem is off hook }
- intModemRingWakeEnb = 3; { 1=wakeup on ring is enabled }
- extModemSelected = 4; { 1=external modem selected }
- modemSetBit = 15; { 1=set bit, 0=clear bit (SetIntModemState) }
-
- { bits in BatteryInfo.flags }
- { ("chargerConnected" doesn't mean the charger is plugged in) }
- batteryInstalled = 7; { 1=battery is currently connected }
- batteryCharging = 6; { 1=battery is being charged }
- chargerConnected = 5; { 1=charger is connected to the PowerBook }
-
- HDPwrQType = 'HD';
-
-
- TYPE
- BatteryInfo = PACKED RECORD
- flags: UInt8; { misc flags (see below) }
- warningLevel: UInt8; { scaled warning level (0-255) }
- reserved: UInt8; { reserved for internal use }
- batteryLevel: UInt8; { scaled battery level (0-255) }
- END;
- ModemByte = SInt8;
-
- BatteryByte = SInt8;
-
- PMResultCode = LONGINT;
-
- SleepQRecPtr = ^SleepQRec;
-
- HDSpindownProcPtr = ProcPtr; { PROCEDURE HDSpindown(VAR theElement: HDQueueElement); }
- {
- SleepQProcPtr uses register based parameters on the 68k and cannot
- be written in or called from a high-level language without the help of
- mixed mode or assembly glue.
-
- In:
- => message D0.L
- => qRecPtr A0.L
- Out:
- <= return value D0.L
- }
- SleepQProcPtr = ProcPtr; { FUNCTION SleepQ(message: LONGINT; qRecPtr: SleepQRecPtr): LONGINT; }
- HDSpindownUPP = UniversalProcPtr;
- SleepQUPP = UniversalProcPtr;
-
- HDQueueElement = RECORD
- hdQLink: Ptr; { pointer to next queue element }
- hdQType: INTEGER; { queue element type (must be HDQType) }
- hdFlags: INTEGER; { miscellaneous flags }
- hdProc: HDSpindownUPP; { pointer to routine to call }
- hdUser: LONGINT; { user-defined (variable storage, etc.) }
- END;
- SleepQRec = RECORD
- sleepQLink: ^SleepQRec;
- sleepQType: INTEGER; { type = 16 }
- sleepQProc: SleepQUPP; { Pointer to sleep universal proc ptr }
- sleepQFlags: INTEGER;
- END;
- { wakeup time record }
- WakeupTime = RECORD
- wakeTime: LONGINT; { wakeup time (same format as current time) }
- wakeEnabled: BOOLEAN; { 1=enable wakeup timer, 0=disable wakeup timer }
- END;
- { battery time information (in seconds) }
- BatteryTimeRec = RECORD
- expectedBatteryTime: LONGINT; { estimated battery time remaining }
- minimumBatteryTime: LONGINT; { minimum battery time remaining }
- maximumBatteryTime: LONGINT; { maximum battery time remaining }
- timeUntilCharged: LONGINT; { time until battery is fully charged }
- END;
-
- FUNCTION DisableWUTime: OSErr;
- FUNCTION SetWUTime(WUTime: LONGINT): OSErr;
- FUNCTION GetWUTime(VAR WUTime: LONGINT; VAR WUFlag: SignedByte): OSErr;
- FUNCTION BatteryStatus(VAR Status: SignedByte; VAR Power: SignedByte): OSErr;
- FUNCTION ModemStatus(VAR Status: SignedByte): OSErr;
- FUNCTION IdleUpdate: LONGINT;
- {$IFC NOT GENERATINGCFM}
- INLINE $A285, $2E80;
- {$ENDC}
- FUNCTION GetCPUSpeed: LONGINT;
- {$IFC NOT GENERATINGCFM}
- INLINE $70FF, $A485, $2E80;
- {$ENDC}
- PROCEDURE EnableIdle;
- {$IFC NOT GENERATINGCFM}
- INLINE $7000, $A485;
- {$ENDC}
- PROCEDURE DisableIdle;
- {$IFC NOT GENERATINGCFM}
- INLINE $7001, $A485;
- {$ENDC}
- PROCEDURE SleepQInstall(qRecPtr: SleepQRecPtr);
- {$IFC NOT GENERATINGCFM}
- INLINE $205F, $A28A;
- {$ENDC}
- PROCEDURE SleepQRemove(qRecPtr: SleepQRecPtr);
- {$IFC NOT GENERATINGCFM}
- INLINE $205F, $A48A;
- {$ENDC}
- PROCEDURE AOn;
- {$IFC NOT GENERATINGCFM}
- INLINE $7004, $A685;
- {$ENDC}
- PROCEDURE AOnIgnoreModem;
- {$IFC NOT GENERATINGCFM}
- INLINE $7005, $A685;
- {$ENDC}
- PROCEDURE BOn;
- {$IFC NOT GENERATINGCFM}
- INLINE $7000, $A685;
- {$ENDC}
- PROCEDURE AOff;
- {$IFC NOT GENERATINGCFM}
- INLINE $7084, $A685;
- {$ENDC}
- PROCEDURE BOff;
- {$IFC NOT GENERATINGCFM}
- INLINE $7080, $A685;
- {$ENDC}
- { Public Power Management API (NEW!) }
- FUNCTION PMSelectorCount: INTEGER;
- {$IFC NOT GENERATINGCFM}
- INLINE $7000, $A09E, $3E80;
- {$ENDC}
- FUNCTION PMFeatures: LONGINT;
- {$IFC NOT GENERATINGCFM}
- INLINE $7001, $A09E, $2E80;
- {$ENDC}
- FUNCTION GetSleepTimeout: UInt8;
- {$IFC NOT GENERATINGCFM}
- INLINE $7002, $A09E, $1E80;
- {$ENDC}
- PROCEDURE SetSleepTimeout(timeout: ByteParameter);
- {$IFC NOT GENERATINGCFM}
- INLINE $101F, $4840, $303C, $0003, $A09E;
- {$ENDC}
- FUNCTION GetHardDiskTimeout: UInt8;
- {$IFC NOT GENERATINGCFM}
- INLINE $7004, $A09E, $1E80;
- {$ENDC}
- PROCEDURE SetHardDiskTimeout(timeout: ByteParameter);
- {$IFC NOT GENERATINGCFM}
- INLINE $101F, $4840, $303C, $0005, $A09E;
- {$ENDC}
- FUNCTION HardDiskPowered: BOOLEAN;
- {$IFC NOT GENERATINGCFM}
- INLINE $7006, $A09E, $1E80;
- {$ENDC}
- PROCEDURE SpinDownHardDisk;
- {$IFC NOT GENERATINGCFM}
- INLINE $7007, $A09E;
- {$ENDC}
- FUNCTION IsSpindownDisabled: BOOLEAN;
- {$IFC NOT GENERATINGCFM}
- INLINE $7008, $A09E, $1E80;
- {$ENDC}
- PROCEDURE SetSpindownDisable(setDisable: BOOLEAN);
- {$IFC NOT GENERATINGCFM}
- INLINE $101F, $4840, $303C, $0009, $A09E;
- {$ENDC}
- FUNCTION HardDiskQInstall(VAR theElement: HDQueueElement): OSErr;
- {$IFC NOT GENERATINGCFM}
- INLINE $205F, $700A, $A09E, $3E80;
- {$ENDC}
- FUNCTION HardDiskQRemove(VAR theElement: HDQueueElement): OSErr;
- {$IFC NOT GENERATINGCFM}
- INLINE $205F, $700B, $A09E, $3E80;
- {$ENDC}
- PROCEDURE GetScaledBatteryInfo(whichBattery: INTEGER; VAR theInfo: BatteryInfo);
- {$IFC NOT GENERATINGCFM}
- INLINE $205F, $301F, $4840, $303C, $000C, $A09E, $2080;
- {$ENDC}
- PROCEDURE AutoSleepControl(enableSleep: BOOLEAN);
- {$IFC NOT GENERATINGCFM}
- INLINE $101F, $4840, $303C, $000D, $A09E;
- {$ENDC}
- FUNCTION GetIntModemInfo: LONGINT;
- {$IFC NOT GENERATINGCFM}
- INLINE $700E, $A09E, $2E80;
- {$ENDC}
- PROCEDURE SetIntModemState(theState: INTEGER);
- {$IFC NOT GENERATINGCFM}
- INLINE $301F, $4840, $303C, $000F, $A09E;
- {$ENDC}
- FUNCTION MaximumProcessorSpeed: INTEGER;
- {$IFC NOT GENERATINGCFM}
- INLINE $7010, $A09E, $3E80;
- {$ENDC}
- FUNCTION CurrentProcessorSpeed: INTEGER;
- {$IFC NOT GENERATINGCFM}
- INLINE $7011, $A09E, $3E80;
- {$ENDC}
- FUNCTION FullProcessorSpeed: BOOLEAN;
- {$IFC NOT GENERATINGCFM}
- INLINE $7012, $A09E, $1E80;
- {$ENDC}
- FUNCTION SetProcessorSpeed(fullSpeed: BOOLEAN): BOOLEAN;
- {$IFC NOT GENERATINGCFM}
- INLINE $101F, $4840, $303C, $0013, $A09E, $1E80;
- {$ENDC}
- FUNCTION GetSCSIDiskModeAddress: INTEGER;
- {$IFC NOT GENERATINGCFM}
- INLINE $7014, $A09E, $3E80;
- {$ENDC}
- PROCEDURE SetSCSIDiskModeAddress(scsiAddress: INTEGER);
- {$IFC NOT GENERATINGCFM}
- INLINE $301F, $4840, $303C, $0015, $A09E;
- {$ENDC}
- PROCEDURE GetWakeupTimer(VAR theTime: WakeupTime);
- {$IFC NOT GENERATINGCFM}
- INLINE $205F, $7016, $A09E;
- {$ENDC}
- PROCEDURE SetWakeupTimer(VAR theTime: WakeupTime);
- {$IFC NOT GENERATINGCFM}
- INLINE $205F, $7017, $A09E;
- {$ENDC}
- FUNCTION IsProcessorCyclingEnabled: BOOLEAN;
- {$IFC NOT GENERATINGCFM}
- INLINE $7018, $A09E, $1E80;
- {$ENDC}
- PROCEDURE EnableProcessorCycling(enable: BOOLEAN);
- {$IFC NOT GENERATINGCFM}
- INLINE $101F, $4840, $303C, $0019, $A09E;
- {$ENDC}
- FUNCTION BatteryCount: INTEGER;
- {$IFC NOT GENERATINGCFM}
- INLINE $701A, $A09E, $3E80;
- {$ENDC}
- FUNCTION GetBatteryVoltage(whichBattery: INTEGER): Fixed;
- {$IFC NOT GENERATINGCFM}
- INLINE $301F, $4840, $303C, $001B, $A09E, $2E80;
- {$ENDC}
- PROCEDURE GetBatteryTimes(whichBattery: INTEGER; VAR theTimes: BatteryTimeRec);
- {$IFC NOT GENERATINGCFM}
- INLINE $205F, $301F, $4840, $303C, $001C, $A09E;
- {$ENDC}
- FUNCTION GetDimmingTimeout: UInt8;
- {$IFC NOT GENERATINGCFM}
- INLINE $701D, $A09E, $1E80;
- {$ENDC}
- PROCEDURE SetDimmingTimeout(timeout: ByteParameter);
- {$IFC NOT GENERATINGCFM}
- INLINE $101F, $4840, $303C, $001E, $A09E;
- {$ENDC}
- PROCEDURE DimmingControl(enableSleep: BOOLEAN);
- {$IFC NOT GENERATINGCFM}
- INLINE $101F, $4840, $303C, $001F, $A09E;
- {$ENDC}
- FUNCTION IsDimmingControlDisabled: BOOLEAN;
- {$IFC NOT GENERATINGCFM}
- INLINE $7020, $A09E, $1E80;
- {$ENDC}
- FUNCTION IsAutoSlpControlDisabled: BOOLEAN;
- {$IFC NOT GENERATINGCFM}
- INLINE $7021, $A09E, $1E80;
- {$ENDC}
- CONST
- uppHDSpindownProcInfo = $000000C0; { PROCEDURE (4 byte param); }
- uppSleepQProcInfo = $00131832; { Register FUNCTION (4 bytes in D0, 4 bytes in A0): 4 bytes in D0; }
-
- FUNCTION NewHDSpindownProc(userRoutine: HDSpindownProcPtr): HDSpindownUPP;
- {$IFC NOT GENERATINGCFM }
- INLINE $2E9F;
- {$ENDC}
-
- FUNCTION NewSleepQProc(userRoutine: SleepQProcPtr): SleepQUPP;
- {$IFC NOT GENERATINGCFM }
- INLINE $2E9F;
- {$ENDC}
-
- PROCEDURE CallHDSpindownProc(VAR theElement: HDQueueElement; userRoutine: HDSpindownUPP);
- {$IFC NOT GENERATINGCFM}
- INLINE $205F, $4E90;
- {$ENDC}
-
- FUNCTION CallSleepQProc(message: LONGINT; qRecPtr: SleepQRecPtr; userRoutine: SleepQUPP): LONGINT;
- {$IFC NOT GENERATINGCFM}
- {To be implemented: Glue to move parameters into registers.}
- {$ENDC}
-
- {$ALIGN RESET}
- {$POP}
-
- {$SETC UsingIncludes := PowerIncludes}
-
- {$ENDC} {__POWER__}
-
- {$IFC NOT UsingIncludes}
- END.
- {$ENDC}
-